USB


Кто не слышал такую аббревиатуру, как USB. Скорее всего, ты пользовался этой шиной, подключал к ней разные устройства и радовался, что с установкой нет никаких проблем. А ты никогда не задумывался, почему это так? Откуда и зачем взялась эта шина, почему можно подключить устройство к работающему компьютеру и так далее? В этой статье мы постараемся дать ответ на эти и другие вопросы.

Когда, как и зачем?

Сколько устройств можно подключить к двум COM-портам и одному LPT? Правильно, три. До появления разъема PS/2 один COM-порт занимала мышь. Остается два порта. Этого мало. Да и с подключением могут быть проблемы – прерывания, драйверы и все прочее, что так часто вводит в ступор чайников и из-за чего у них возникают те вопросы, от которых впадают в кому, бьются в истерике и горько рыдают работники службы технической поддержки. Скорости COM и LPT-портов постепенно стало не хватать для нужд потребителей. Поэтому, проявляя заботу о пользователях и удовлетворяя всеобщую потребность в унификации, компании Intel, DEC, IBM, NEC, Northen Telecom и Compaq объединились в консорциум и попытались решить проблему. Нужен был новый интерфейс подключения к компьютеру периферийных устройств, который, помимо всего прочего, отвечал бы трем основным требованиям: простота подключения, высокая скорость обмена данными, возможность подсоединения множества устройств. Результатом проведенной работы (1995-1996 годы) стало создание шины USB – Universal Serial Bus, что переводится как универсальная последовательная шина.

Несмотря на многочисленные достоинства нового интерфейса и его преимущества перед старыми портами (а их много, например, высокая скорость обмена данными - 12 МБит/с для USB 1.0 и 480 МБит/с для USB 2.0, поддержка до 127 устройств, возможность «горячего» подключения, электропитание устройств непосредственно через шину USB и пр.), сразу после выхода USB в свет не отмечалось ее особой популярности и всплеска производства USB-устройств. Причина проста - отсутствие поддержки в операционной системе. А какая операционка у нас была в 1995 году? Правильно, великая и глючная Windows 95! Microsoft обеспечила нормальную и полноценную поддержку USB только в Windows 98, а обновление для Windows 95 OSR2.1 не сильно улучшило тогдашнюю ситуацию, так как все было сделано больно криво. Ну а уж после появления полноценной программной поддержки в популярной ОС, производители периферии не стали тормозить – на рынок обрушился поток USB-устройств. Как абсолютно новых моделей, так и более старых, переделанных под стандарт USB.

Являясь в некотором смысле правопреемником COM-порта, шина USB не забыла о еще одном предназначении предка – соединение непосредственно двух компьютеров. Законнектить две тачки через USB гораздо удобнее – выше скорость, «горячее» подключение безо всяких перезагрузок. А самое главное – протоколом связи является стандартный Ethernet-протокол, поэтому соединение подойдет подавляющему большинству игр и программ.

А еще компаниям-производителям оборудования понравилось то, что через USB можно питать устройство. Так появились очень удобные девайсы, например базовая станция для беспроводной мыши, которая не только связывает ее с компьютером, но и перезаряжает аккумулятор.

Как оно работает?

Помимо общего вопроса работы шины, интересны и некоторые частные моменты. Например, как реализовано «горячее» подключение, почему можно подключить целых 127 устройств, почему не нужно возиться с установкой драйверов и так далее. Попробуем разобраться.

Возможность подключения более чем сотни устройств – это не шутка. Такая большая цепочка девайсов – это уже самая настоящая сеть. Сеть с топологией «многоуровневая звезда». Иерархия этой сети показана на рис. 1. В системную плату твоего компьютера встроены два устройства с верхней ступени иерархии, которая носит название root tier (главный уровень, верхний слой): хост контроллер (может быть только один) и корневой разветвитель (root hub). Хост-контроллер (или USB-контроллер) отвечает за следующие действия: обнаружение, присоединение и удаление устройств (по терминологии USB-спецификации), управление командным потоком между хостом и устройствами USB, управление потоком данных между хостом и устройствами USB, сбор статистики о состоянии и активности устройств, обеспечение подачи ограниченного количества мощности на присоединенные устройства USB. Корневой хаб дает нам возможность подключать к шине USB более одного устройства. Root hub соединен непосредственно с хост-контроллером.

На рис.1 хорошо видно, что все устройства, находящиеся в цепи, делятся на два типа: хабы, которые позволяют подключить к одному порту несколько конечных устройств и являются расширителями сети, и собственно конечные, устройства (функции). Хаб – это девайс, который занимает один порт, но при этом имеет несколько портов USB для подключения других устройств. Функция – это фотоаппарат, принтер, внешний CD-ROM и так далее. Хаб также может быть встроен и в устройство – чаще всего, в монитор.

Одна из самых «вкусных» возможностей USB – это «горячее» подключение. Как оно происходит? Все просто. При подключении нового устройства происходит изменение напряжения в цепи (100 мА), которое улавливается хостом. Тот сразу начинает опрашивать новое устройство о том, кто оно, что и зачем, то есть выясняет его класс, нужную ему полосу пропускания и прочую служебную информацию. После получения ответов новичку присваивается уникальный номер, а в ОС загружается нужный драйвер. Никаких требований ввести IRQ, DMA или что-то еще нет, потому что программы, работающие с устройством, общаются не с ним, а с программным интерфейсом, через который USB взаимодействует с окружающей средой. Всю работу выполняет он и хост-контроллер.

По USB-кабелям не только передаются данные, но и осуществляется питание для устройств. Как и все в мире оно конечное, и хватает его не всем. Мышке, клавиатуре или еще какому-нибудь небольшому девайсу вполне достаточно. А вот джойстику или рулю с обратной связью обязательно понадобится отдельный электрический кабель.

Передача данных

Разобравшись с проводами, можно перейти к информации, которая передается по ним, к структуре пакета данных, которыми обмениваются USB-функции с хостом. Тут сразу стоит отметить, что сами функции между собой никак не общаются, обмен данными может идти только между ними и контроллером. И только контроллер может выступать инициатором этого обмена (за одним исключением – устройство может первым послать сигнал хосту, если оно выводит компьютер из «спящего» режима). Данные передаются пакетами. Глобально все пакеты делятся на две части – in (передаются функциями) и out (передаются хостом). Существует несколько типов пакетов. Пакет-признак (token paket) несет в себе служебную информацию, что и кому собственно следует. Пакет с данными (data packet), как несложно догадаться, содержит в сене передаваемые данные. Пакет согласования (handshake packet), как и пакет-признак, несет в себе служебную информацию, но не о том, что и кому передается, а об итогах этой передачи. Соответственно, каждая транзакция состоит из трех частей – передача маркера, который «договаривается» о доставке, передача непосредственно данных и информация о завершение транзакции, которая содержится в пакете согласования.

В спецификации USB определены два типа каналов: потоковые (stream) и каналы сообщений (message). Канал сообщения полностью находиться под контролем хоста и инициируются хостом при необходимости отправить устройству запрос. Имеет строго обозначенную структуру и, в целом, является каналом передачи служебной информации. Потоковые каналы не имеют строго заданной структуры и могут управляться как хостом, так и функцией. Для того чтобы окончательно тебя запутать, скажу, что видов передачи информации тоже несколько.

Управляющая передача (control transfer). Используется для настройки и конфигурации устройств, а также для управления передачей данных. Требует выделения гарантированной полосы пропускания.

Передача с прерываниями (interrupt transfer). Используется для передачи небольших пакетов данных требующих немедленного внимания (например, информация от мышей и клавиатур). Имеет высший приоритет среди всех типов передач информации и обеспечивает гарантированную доставку данных.

Изохронная передача (isochronous transfer). Используется для передачи потоковых данных в реальном времени (аудио и видео). Не гарантирует доставку пакетов, но требует определенной выделенной полосы пропускания.

Массовая передача (bulk transfer). Является противоположностью передачи с прерываниями. Имеет высокую длительность, передает большие объемы информации с гарантированной безошибочной доставкой. Из-за объемов передаваемых данных «подминает» под себя всю доступную полосу пропускания и отдает часть, только в случае появления передачи с более высоким приоритетом и забирает обратно при освобождении канала. Не требует гарантированной полосы пропускания.

Таким образом, устанавливая тип передачи, хост-контроллер динамично распределяет полосу пропускания USB между подключенными устройствами, и мышь всегда сможет передать информацию о положении курсора, даже если в этот момент закачивается большой файл с флэш-карты.

USB 2.0 – что нового, в чем отличия?

Все развивается и эволюционирует. Не обошло это веяние стороной и шину USB. Скорости первой версии (12 МБит/с) стало явно не хватать. Например, при подключении по ней CD-ROM’ов у них была ограниченная скорость чтения, записи и перезаписи – всего лишь какие-то несчастные 6Х. Также больше скорости нужно было внешним жестким дискам, сканерам да и многим другим устройствам. Решением стало появление USB 2.0 (Состав разработчиков несколько изменился. В этот раз трудились Intel, Microsoft, NEC, Compaq, Lucent и Phillips), где скорость была увеличена аж в 40 раз – до 480 Мбит/сек! Сухие цифры нужно разбавить пояснением – гиг можно передать за минуту. Неслабо?

В новой спецификации появилось и несколько отличий от предыдущих. Были определены три скоростных режима. Первый – это low-speed signaling bit rate, низкая скорость обмена, 1,5 МБит/с. Второй – высокая скорость обмена full-speed signaling bit rate, 12 МБит/с. Это было в двух первых версиях, USB 1.0 и USB 1.1. Третий режим – это уже третья версия шины, USB 2.0, high speed signaling bit rate – 480 МБит/с. Третья версия полностью совместима с двумя предыдущими, то есть в порт USB 2.0 можно воткнуть устройство, которое поддерживает только более раннюю версию USB, а вот обратное, зачастую, неверно. Чтобы не было проблем с разными скоростями, применяется метод буферизации информации, поступающей от наименее скоростных устройств. Кабель второй версии представляет собой экранированную витую пару, а кабели более ранних версий могут быть и неэкранированы.

Хотя это и не касается напрямую USB 2.0, нужно отметить, что те устройства, которые передают и принимают большие объемы трафика, необходимо подключать ближе к хост-контроллеру, чтобы оптимизировать передачу информации по USB. Вот такой маленький совет.


"Железо"
www.xaker.ru

Hosted by uCoz